iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 2
0
DevOps

在後端漫遊,基礎N大建設系列 第 2

Day02 動手做一個伺服器吧!

  • 分享至 

  • xImage
  •  

什麼是伺服器?

在日常生活中,玩手機遊戲、看社群網站、逛網購、與家人視訊聊天、使用手機支付、登記預約口罩...等線上服務,幾乎是一般人每天都會做的「例行公事」了,但是我們為什麼透過手機就可以做這麼多事情呢?其實這些都與伺服器息息相關。

上網搜尋「伺服器」三個字的話,會出現一堆機器! (如下圖)
原來我們平常使用的線上服務都是一台機器呀!那我猜第一台是 iThome,第二台是 iT邦幫忙 (大誤!)/images/emoticon/emoticon37.gif

伺服器封面照

圖片引用自:伺服器是什麼?有哪些種類?

根據 維基百科 解釋:

伺服器(英語:server)指:
一個管理資源並為用戶提供服務的電腦軟體,通常分為檔案伺服器(能使用戶在其它電腦存取檔案),資料庫伺服器和應用程式伺服器。
執行以上軟體的電腦,或稱為網路主機(host)。
伺服器通常以網絡作為媒介,既可以通過內部網路對內提供服務,也可以通過網際網路對外提供服務。伺服器的最大特點就是其強大的運算能力,使其能在短時間內完成大量工作,並為大量用戶提供服務。

上述的解釋看起來,又不像是機器了,反而像是我們平時生活所認知的伺服器了!
所以可以發現伺服器其實定義很廣,也有很多種型態,不管是硬體的伺服器、檔案伺服器、APP伺服器...等。
換句話說,我們應該可以想成:客人(client)可以向電腦(server)請求做特定事項,都可視為伺服器的一種。
在這邊舉幾個例子:

  1. 玩推塔遊戲時,在遊戲畫面(client)上點擊技能,通知遊戲(server)讓人物使出必殺技。
  2. 網購時,在網頁上(client)點擊購買,通知平台(server)建立訂單。
  3. 家人(client)按下手機號碼,讓手機(server)撥出電話。
  4. 員工(client)使用Windows電腦(server)做PPT簡報。

透過上述例子,我們可以知道生活中其實隨處可見伺服器,讓我們可以去做很多大家早已習慣的事情。/images/emoticon/emoticon35.gif
至於伺服器到底是什麼做的呢?就讓身為一位小小工程師的我,簡單示範怎麼建立伺服器吧!
不過這邊的伺服器是指網頁伺服器。


開始建立 Web Server

以下範例的程式碼可以在這邊下載

這邊採用Go程式語言,做簡單的示範。
Go語言在這邊就不贅述了,網路上資源很豐富,歡迎大家上網查詢。
當然不是只有Go,使用Node.js、Python...大眾語言都可以建立Web Server,只是小弟我個人蠻喜歡這門語言,語法簡易又有方便維護的內建功能!
也歡迎大家使用自己喜好的程式語言去建立Server。

  1. 這邊先簡單描述一下資料夾架構 (如下圖)
/
|--- /public/ # <--- 用來呈現在網頁上的資料夾目錄
|    |
|    |-- hello.txt
|    |-- world.txt
|  
|
|-- main.go
  1. 撰寫main.go內容如下
package main

import (
	"log"
	"net/http"
)

func main() {
	router := http.NewServeMux()
	router.Handle("/", http.FileServer(http.Dir("./public")))

	log.Println("開始建立伺服器")
	log.Fatal(http.ListenAndServe(":8080", router))
}
  1. 使用終端機(Terminal)執行程式之後,可以看見伺服器資訊
$ go run main.go
2020/09/02 20:32:34 開始建立伺服器
  1. 用瀏覽器開啟http://localhost:8000,可以看到public/裡有存在的檔案。(如下圖)
    https://ithelp.ithome.com.tw/upload/images/20200902/20125815f2sIOG54dn.png
    點擊hello.txt,可以看見hello.txt的內容。 (如下圖)
    https://ithelp.ithome.com.tw/upload/images/20200902/20125815wvvHh6DFeM.png

  2. 如果我們再新增一個index.html檔案在public/,就可以產生一個網頁了!
    這也是一般常見網頁伺服器的運作方式。
    https://ithelp.ithome.com.tw/upload/images/20200902/20125815PQYHaYkroP.png

小結

這次透過範例想讓大家知道,其實伺服器可以用來讓外面使用者透過網路,連線進來電腦取得檔案、看見檔案內容、顯示頁面。伺服器有百百種,而這次的範例當然也只是其中一種。
不過大部分伺服器都會有一個共同的動作,就是向外暴露伺服器本身可以連得到的方式、以及取得伺服器的各種回應

明天在與大家示範另一種伺服器,API伺服器。
明天見/images/emoticon/emoticon29.gif


上一篇
Day01 建設之路
下一篇
Day03 原來這就是傳說中的API!
系列文
在後端漫遊,基礎N大建設6
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言